#define _CRT_SECURE_NO_WARNINGS 1
//#include <iostream>
//
//using namespace std;
//int ad, hp;
//int ans = 0x3f3f3f3f;
//void dfs(int a, int d, int in)
//{
//    if (a >= hp || d >= ad)
//    {
//        ans = min(ans, in);
//        return;
//    }
//    dfs(a + 1, d, in + ((hp - 1) / (a + 1)) * (ad - d));
//    dfs(a, d + 1, in + ((hp - 1) / a) * (ad - d - 1));
//
//}
//int main()
//{
//    /*cin >> ad >> hp;
//    int in = 0;
//    int a = 1, d = 0;
//    in = ((hp - 1) / a) * (ad - d);
//    dfs(a, d, in);
//
//    cout << in;*/
//    solve();
//    return 0;
//}
//void solve()
//{
//    int n, m;
//    cin >> n >> m;
//    int res = 0;
//    int tmp = 0;
//    int ans = 1e9;
//    for (int i = 1; i < m - 1; i++)
//    {
//        int tmp = 0;
//        for (int j = 0; j < n; j++)
//        {
//            tmp += ((m + i - 1) / i - 1) * (n - j);
//        }
//        ans = min(res + tmp, ans);
//        res += ((m + i - 1) / i - 1) * n;
//    }
//    cout << min(res, ans);
//}
#include <iostream>

using namespace std;
int ad, hp;
int dfs(int a, int d)
{
	int t = ((hp - 1) / a) * (ad - d);
	if (a == hp || d == ad)
		return t;
	int res = min(dfs(a, d + 1) + t, dfs(a + 1, d) + t);
	return res;
}
int main()
{
	cin >> ad >> hp;
    int in = 0;
    int a = 1, d = 0;

	cout << dfs(a, d);
	return 0;
}